#pragma once
#pragma managed
//////////////////////////////////////////////////////////////////////////
using namespace System;
//////////////////////////////////////////////////////////////////////////
NAMESPACE_BEGIN
//////////////////////////////////////////////////////////////////////////
/// <summary>
/// IPL_DEPTH
/// </summary>
[FlagsAttribute]
public enum class PixelDepth
{
	/// <summary>
	/// Unknown
	/// </summary>
	Unknown = 0,
	/// <summary>
	/// IPL_DEPTH_SIGN
	/// </summary>
	DepthSign = IPL_DEPTH_SIGN,
	/// <summary>
	/// IPL_DEPTH_1U
	/// </summary>
	Depth1U = IPL_DEPTH_1U,
	/// <summary>
	/// IPL_DEPTH_8U
	/// </summary>
	Depth8U = IPL_DEPTH_8U,
	/// <summary>
	/// IPL_DEPTH_16U
	/// </summary>
	Depth16U = IPL_DEPTH_16U,
	/// <summary>
	/// IPL_DEPTH_32F
	/// </summary>
	Depth32F = IPL_DEPTH_32F,
	/// <summary>
	/// IPL_DEPTH_8S
	/// </summary>
	Depth8S = IPL_DEPTH_8S,
	/// <summary>
	/// IPL_DEPTH_16S
	/// </summary>
	Depth16S = IPL_DEPTH_16S,
	/// <summary>
	/// IPL_DEPTH_32S
	/// </summary>
	Depth32S = IPL_DEPTH_32S,
	/// <summary>
	/// for storing double-precision
	/// floating point data in Image's
	/// IPL_DEPTH_64F
	/// </summary>
	Depth64F = IPL_DEPTH_64F,
};

/// <summary>
/// IPL_DATAORDER
/// </summary>
public enum class ImageDataOrder
{
	/// <summary>
	/// IPL_DATA_ORDER_PIXEL
	/// </summary>
	Pixel = IPL_DATA_ORDER_PIXEL,
	/// <summary>
	/// IPL_DATAORDER_PLANE
	/// </summary>
	Plane = IPL_DATA_ORDER_PLANE,
};

/// <summary>
/// IPL_ORIGIN
/// </summary>
public enum class ImageOrigin
{
	/// <summary>
	/// IPL_ORIGIN_TL
	/// </summary>
	TopLeft = IPL_ORIGIN_TL,
	/// <summary>
	/// IPL_ORIGIN_BL
	/// </summary>
	BottomLeft = IPL_ORIGIN_BL,
};

/// <summary>
/// IPL_ALIGN
/// </summary>
public enum class ImageAlign
{
	/// <summary>
	/// Unknown
	/// </summary>
	Unknown = 0,
	/// <summary>
	/// IPL_ALIGN_4BYTES
	/// </summary>
	Align4Bytes = IPL_ALIGN_4BYTES,
	/// <summary>
	/// IPL_ALIGN_8BYTES
	/// </summary>
	Align8Bytes = IPL_ALIGN_8BYTES,
	/// <summary>
	/// IPL_ALIGN_16BYTES
	/// </summary>
	Align16Bytes = IPL_ALIGN_16BYTES,
	/// <summary>
	/// IPL_ALIGN_32BYTES
	/// </summary>
	Align32Bytes = IPL_ALIGN_32BYTES,
	/// <summary>
	/// IPL_ALIGN_DWORD
	/// </summary>
	AlignDWORD = IPL_ALIGN_DWORD,
	/// <summary>
	/// IPL_ALIGN_QWORD
	/// </summary>
	AlignQWORD = IPL_ALIGN_QWORD,
};

/// <summary>
/// IPL_BORDER
/// </summary>
public enum class ImageBorder
{
	/// <summary>
	/// IPL_BORDER_CONSTANT
	/// </summary>
	Constant = IPL_BORDER_CONSTANT,
	/// <summary>
	/// IPL_BORDER_REPLICATE
	/// </summary>
	Replicate = IPL_BORDER_REPLICATE,
	/// <summary>
	/// IPL_BORDER_REFLECT
	/// </summary>
	Reflect = IPL_BORDER_REFLECT,
	/// <summary>
	/// IPL_BORDER_WRAP
	/// </summary>
	Wrap = IPL_BORDER_WRAP,
	/// <summary>
	/// extra border mode
	/// IPL_BORDER_REFLECT_101
	/// </summary>
	Reflect_101 = IPL_BORDER_REFLECT_101,
};

/// <summary>
/// IPL_IMAGE_FLAGS
/// </summary>
[FlagsAttribute]
enum class ImageFlag
{
	/// <summary>
	/// IPL_IMAGE_HEADER
	/// </summary>
	Header = IPL_IMAGE_HEADER,
	/// <summary>
	/// IPL_IMAGE_DATA
	/// </summary>
	Data = IPL_IMAGE_DATA,
	/// <summary>
	/// IPL_IMAGE_ROI
	/// </summary>
	ROI = IPL_IMAGE_ROI,
};

/// <summary>
/// MatDepth
/// </summary>
[FlagsAttribute]
public enum class MatDepth
{
	/// <summary>
	/// CV_8U
	/// </summary>
	CV8U = CV_8U,
	/// <summary>
	/// CV_8S
	/// </summary>
	CV8S = CV_8S,
	/// <summary>
	/// CV_16U
	/// </summary>
	CV16U = CV_16U,
	/// <summary>
	/// CV_16S
	/// </summary>
	CV16S = CV_16S,
	/// <summary>
	/// CV_32S
	/// </summary>
	CV32S = CV_32S,
	/// <summary>
	/// CV_32F
	/// </summary>
	CV32F = CV_32F,
	/// <summary>
	/// CV_64F
	/// </summary>
	CV64F = CV_64F,
	/// <summary>
	/// CV_USRTYPE1
	/// </summary>
	CVUSRTYPE1 = CV_USRTYPE1,
};

/// <summary>
/// MatFlag
/// </summary>
[FlagsAttribute]
public enum class MatFlag
{
	/// <summary>
	/// CV_8UC1
	/// </summary>
	CV8UC1 = CV_8UC1,
	/// <summary>
	/// CV_8UC2
	/// </summary>
	CV8UC2 = CV_8UC2,
	/// <summary>
	/// CV_8UC3
	/// </summary>
	CV8UC3 = CV_8UC3,
	/// <summary>
	/// CV_8UC4
	/// </summary>
	CV8UC4 = CV_8UC4,
	/// <summary>
	/// CV_8SC1
	/// </summary>
	CV8SC1 = CV_8SC1,
	/// <summary>
	/// CV_8SC2
	/// </summary>
	CV8SC2 = CV_8SC2,
	/// <summary>
	/// CV_8SC3
	/// </summary>
	CV8SC3 = CV_8SC3,
	/// <summary>
	/// CV_8SC4
	/// </summary>
	CV8SC4 = CV_8SC4,
	/// <summary>
	/// CV_16UC1
	/// </summary>
	CV16UC1 = CV_16UC1,
	/// <summary>
	/// CV_16UC2
	/// </summary>
	CV16UC2 = CV_16UC2,
	/// <summary>
	/// CV_16UC3
	/// </summary>
	CV16UC3 = CV_16UC3,
	/// <summary>
	/// CV_16UC4
	/// </summary>
	CV16UC4 = CV_16UC4,
	/// <summary>
	/// CV_16SC1
	/// </summary>
	CV16SC1 = CV_16SC1,
	/// <summary>
	/// CV_16SC2
	/// </summary>
	CV16SC2 = CV_16SC2,
	/// <summary>
	/// CV_16SC3
	/// </summary>
	CV16SC3 = CV_16SC3,
	/// <summary>
	/// CV_16SC4
	/// </summary>
	CV16SC4 = CV_16SC4,
	/// <summary>
	/// CV_32SC1
	/// </summary>
	CV32SC1 = CV_32SC1,
	/// <summary>
	/// CV_32SC2
	/// </summary>
	CV32SC2 = CV_32SC2,
	/// <summary>
	/// CV_32SC3
	/// </summary>
	CV32SC3 = CV_32SC3,
	/// <summary>
	/// CV_32SC4
	/// </summary>
	CV32SC4 = CV_32SC4,
	/// <summary>
	/// CV_32FC1
	/// </summary>
	CV32FC1 = CV_32FC1,
	/// <summary>
	/// CV_32FC2
	/// </summary>
	CV32FC2 = CV_32FC2,
	/// <summary>
	/// CV_32FC3
	/// </summary>
	CV32FC3 = CV_32FC3,
	/// <summary>
	/// CV_32FC4
	/// </summary>
	CV32FC4 = CV_32FC4,
	/// <summary>
	/// CV_64FC1
	/// </summary>
	CV64FC1 = CV_64FC1,
	/// <summary>
	/// CV_64FC2
	/// </summary>
	CV64FC2 = CV_64FC2,
	/// <summary>
	/// CV_64FC3
	/// </summary>
	CV64FC3 = CV_64FC3,
	/// <summary>
	/// CV_64FC4
	/// </summary>
	CV64FC4 = CV_64FC4,
};

/// <summary>
/// HistType
/// </summary>
[FlagsAttribute]
public enum class HistType
{
	/// <summary>
	/// CV_HIST_ARRAY
	/// </summary>
	Array = CV_HIST_ARRAY,
	/// <summary>
	/// CV_HIST_SPARSE
	/// </summary>
	Sparse = CV_HIST_SPARSE,
	/// <summary>
	/// CV_HIST_TREE
	/// </summary>
	Tree = CV_HIST_TREE,
	/// <summary>
	/// CV_HIST_UNIFORM_FLAG
	/// </summary>
	UniformFlag = CV_HIST_UNIFORM_FLAG,
	/// <summary>
	/// indicates whether bin ranges are set already or not
	/// CV_HIST_RANGES_FLAG
	/// </summary>
	RangesFlag = CV_HIST_RANGES_FLAG,
};

/// <summary>
/// SeqElType
/// </summary>
[FlagsAttribute]
public enum class SeqFlag
{
	/// <summary>
	/// CV_SEQ_ELTYPE_MASK
	/// </summary>
	ElTypeMask = CV_SEQ_ELTYPE_MASK,
	/// <summary>
	/// (x,y)
	/// </summary>
	ElTypePoint = CV_SEQ_ELTYPE_POINT,
	/// <summary>
	/// freeman code: 0::::7
	/// </summary>
	ElTypeCode = CV_SEQ_ELTYPE_CODE,
	/// <summary>
	/// freeman code: 0::::7
	/// </summary>
	ElTypeGeneric = CV_SEQ_ELTYPE_GENERIC,
	/// <summary>
	/// </summary>
	ElTypePtr = CV_SEQ_ELTYPE_PTR,
	/// <summary>
	/// &(x,y)
	/// </summary>
	ElTypePPoint = CV_SEQ_ELTYPE_PPOINT,
	/// <summary>
	/// #(x,y)
	/// </summary>
	ElTypeIndex = CV_SEQ_ELTYPE_INDEX,
	/// <summary>
	/// &next_o, &next_d, &vtx_o, &vtx_d
	/// </summary>
	ElTypeGraphEdge = CV_SEQ_ELTYPE_GRAPH_EDGE,
	/// <summary>
	/// first_edge, &(x,y)
	/// </summary>
	ElTypeGraphVertex = CV_SEQ_ELTYPE_GRAPH_VERTEX,
	/// <summary>
	/// vertex of the binary tree
	/// </summary>
	ElTypeTrianAtr = CV_SEQ_ELTYPE_TRIAN_ATR,
	/// <summary>
	/// connected component
	/// </summary>
	ElTypeConnectedComp = CV_SEQ_ELTYPE_CONNECTED_COMP,
	/// <summary>
	/// (x,y,z)
	/// </summary>
	ElTypePoint3D = CV_SEQ_ELTYPE_POINT3D,
	/// <summary>
	/// </summary>
	KindMask = CV_SEQ_KIND_MASK,
	/// <summary>
	/// types of sequences
	/// </summary>
	KindGeneric = CV_SEQ_KIND_GENERIC,
	/// <summary>
	/// </summary>
	KindCurve = CV_SEQ_KIND_CURVE,
	/// <summary>
	/// </summary>
	KindBinTree = CV_SEQ_KIND_BIN_TREE,
	/// <summary>
	/// types of sparse sequences (sets)
	/// </summary>
	KindGraph = CV_SEQ_KIND_GRAPH,
	/// <summary>
	/// </summary>
	KindSubDiv2D = CV_SEQ_KIND_SUBDIV2D,
	/// <summary>
	/// flags for curves
	/// </summary>
	FlagClosed = CV_SEQ_FLAG_CLOSED,
	/// <summary>
	/// </summary>
	FlagSimple = CV_SEQ_FLAG_SIMPLE,
	/// <summary>
	/// </summary>
	FlagConvex = CV_SEQ_FLAG_CONVEX,
	/// <summary>
	/// </summary>
	FlagHole = CV_SEQ_FLAG_HOLE,
	/// <summary>
	/// flags for graphs
	/// </summary>
	GraphFlagOriented = CV_GRAPH_FLAG_ORIENTED,
	/// <summary>
	/// </summary>
	Graph = CV_GRAPH,
	/// <summary>
	/// </summary>
	OrientedGraph = CV_ORIENTED_GRAPH,
	/// <summary>
	/// point sets
	/// </summary>
	PointSet = CV_SEQ_POINT_SET,
	/// <summary>
	/// </summary>
	Point3DSet = CV_SEQ_POINT3D_SET,
	/// <summary>
	/// </summary>
	Polyline = CV_SEQ_POLYLINE,
	/// <summary>
	/// </summary>
	Polygon = CV_SEQ_POLYGON,
	/// <summary>
	/// </summary>
	Contour = CV_SEQ_CONTOUR,
	/// <summary>
	/// </summary>
	SimplePolygon = CV_SEQ_SIMPLE_POLYGON,
	/// <summary>
	/// chain-coded curves
	/// </summary>
	Chain = CV_SEQ_CHAIN,
	/// <summary>
	/// </summary>
	ChainContour = CV_SEQ_CHAIN_CONTOUR,
	/// <summary>
	/// binary tree for the contour
	/// </summary>
	PolygonTree = CV_SEQ_POLYGON_TREE,
	/// <summary>
	/// sequence of the connected components
	/// </summary>
	ConnectedComp = CV_SEQ_CONNECTED_COMP,
	/// <summary>
	/// sequence of the integer numbers
	/// </summary>
	Index = CV_SEQ_INDEX,
};


/// <summary>
/// Storage flags:
/// </summary>
public enum class StorageFlagsAttribute
{
	/// <summary>
	/// CV_STORAGE_READ
	/// </summary>
	Read = CV_STORAGE_READ,
	/// <summary>
	/// CV_STORAGE_WRITE
	/// </summary>
	Write = CV_STORAGE_WRITE,
	/// <summary>
	/// CV_STORAGE_WRITE_TEXT
	/// </summary>
	WriteText = CV_STORAGE_WRITE_TEXT,
	/// <summary>
	/// CV_STORAGE_WRITE_BINARY
	/// </summary>
	WriteBinary = CV_STORAGE_WRITE_BINARY,
	/// <summary>
	/// CV_STORAGE_APPEND
	/// </summary>
	Append = CV_STORAGE_APPEND,
};

/// <summary>
/// FileNodeFlag
/// </summary>
[FlagsAttribute]
public enum class FileNodeFlag
{
	/// <summary>
	/// CV_NODE_NONE
	/// </summary>
	None = CV_NODE_NONE,
	/// <summary>
	/// CV_NODE_INT
	/// </summary>
	Int = CV_NODE_INT,
	/// <summary>
	/// CV_NODE_INTEGER
	/// </summary>
	Integer = CV_NODE_INTEGER,
	/// <summary>
	/// CV_NODE_REAL
	/// </summary>
	Real = CV_NODE_REAL,
	/// <summary>
	/// CV_NODE_FLOAT
	/// </summary>
	Float = CV_NODE_FLOAT,
	/// <summary>
	/// CV_NODE_STR
	/// </summary>
	Str = CV_NODE_STR,
	/// <summary>
	/// CV_NODE_STRING
	/// </summary>
	String = CV_NODE_STRING,
	/// <summary>
	/// not used
	/// CV_NODE_REF
	/// </summary>
	Ref = CV_NODE_REF,
	/// <summary>
	/// not used
	/// CV_NODE_SEQ
	/// </summary>
	Seq = CV_NODE_SEQ,
	/// <summary>
	/// CV_NODE_MAP
	/// </summary>
	Map = CV_NODE_MAP,
	/// <summary>
	/// CV_NODE_TYPE_MASK
	/// </summary>
	TypeMask = CV_NODE_TYPE_MASK,
	/// <summary>
	/// Used only for writing structures in YAML format::
	/// CV_NODE_FLOW
	/// </summary>
	Flow = CV_NODE_FLOW,
	/// <summary>
	/// Used only for writing structures in YAML format::
	/// CV_NODE_USER
	/// </summary>
	User = CV_NODE_USER,
	/// <summary>
	/// CV_NODE_EMPTY
	/// </summary>
	Empty = CV_NODE_EMPTY,
	/// <summary>
	/// CV_NODE_NAMED
	/// </summary>
	Named = CV_NODE_NAMED,
	/// <summary>
	/// CV_NODE_SEQ_SIMPLE
	/// </summary>
	SeqSimple = CV_NODE_SEQ_SIMPLE,
};

/// <summary>
/// CV_TERMCRIT
/// </summary>
[FlagsAttribute]
public enum class TermCriteriaType
{
	/// <summary>
	/// Unknown
	/// </summary>
	Unknown = 0,
	/// <summary>
	/// CV_TERMCRIT_ITER
	/// </summary>
	Iter = CV_TERMCRIT_ITER,
	/// <summary>
	/// CV_TERMCRIT_NUMBER
	/// </summary>
	Number = CV_TERMCRIT_NUMBER,
	/// <summary>
	/// CV_TERMCRIT_EPS
	/// </summary>
	Eps = CV_TERMCRIT_EPS,
	/// <summary>
	/// Both
	/// </summary>
	Both = Iter | Eps,
};
//////////////////////////////////////////////////////////////////////////
NAMESPACE_END